package com.smart.redisson.lock;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 * AOP
 * 拦截器
 */

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributedLock {
    /**
     * 给锁设置名字
     *
     * @return
     */
    String value() default "";

    long waitTime() default 0L;

    long leaseTime() default 0L;

    /**
     * 锁类型
     *
     * @return
     */
    DistributedLockType type() default DistributedLockType.REENTRANT_LOCK;

    /**
     * 多锁的名字
     *
     * @return
     */
    String[] multiNames() default "";

}
